package com.doudou.zuul.utils;

import com.alibaba.fastjson.JSONObject;
import com.netflix.zuul.context.RequestContext;

import java.util.HashMap;

/**
 * 在zuulFilter 执行返回结果
 */
public class ZuulFilterResponseUtils {


    /**
     * 通用返回信息
     *
     * @param ctx
     * @param code
     * @param message
     * @param error
     */
    public static void sendResponse(RequestContext ctx, int code, String message, String error) {
        JSONObject jsonParam = new JSONObject();
        //提示必须传的参数没有传递
        jsonParam.put("code", code);
        jsonParam.put("message", message);
        jsonParam.put("error", error);
        ctx.setSendZuulResponse(false);
        jsonParam.put("data", new HashMap<>());
        ctx.setResponseStatusCode(200);
        ctx.setResponseBody(jsonParam.toJSONString());
        ctx.getResponse().setContentType("application/json;charset=UTF-8");
        return;
    }

    /**
     * zuul 返回登录的提示消息
     *
     * @param ctx
     */
    public static void sendBadLogoutToLogin(RequestContext ctx, String message, String error) {
        JSONObject jsonParam = new JSONObject();
        //提示必须传的参数没有传递
        jsonParam.put("code", 600);
        jsonParam.put("message", message);
        jsonParam.put("error", error);
        jsonParam.put("data", new HashMap<>());
        ctx.setSendZuulResponse(false);
        ctx.setResponseStatusCode(200);
        ctx.setResponseBody(jsonParam.toJSONString());
        ctx.getResponse().setContentType("application/json;charset=UTF-8");
        return;
    }

    public static void sendSuccessLogoutToLogin(RequestContext ctx, String message, String error) {
        JSONObject jsonParam = new JSONObject();

        //提示必须传的参数没有传递
        jsonParam.put("code", 0);
        jsonParam.put("message", message);
        jsonParam.put("error", error);
        jsonParam.put("data", new HashMap<>());
        ctx.setSendZuulResponse(false);
        ctx.setResponseStatusCode(200);
        ctx.setResponseBody(jsonParam.toJSONString());
        ctx.getResponse().setContentType("application/json;charset=UTF-8");
        return;
    }

    public static void sendResponse(RequestContext ctx, int code, String message, Object data, String error) {
        JSONObject jsonParam = new JSONObject();
        jsonParam.put("code", code);
        jsonParam.put("message", message);
        jsonParam.put("error", error);
        jsonParam.put("data", data);
        ctx.setSendZuulResponse(false);
        ctx.setResponseStatusCode(200);
        ctx.setResponseBody(jsonParam.toJSONString());
        ctx.getResponse().setContentType("application/json;charset=UTF-8");
        return;
    }


    /**
     * 是不是拼接上本地应用的名称，调试时候开启，生产环境关闭
     *
     * @param enableLocalLogPrefix
     * @param localApp
     * @param rawMessage
     * @return
     */
    public static String viewTipsMessage(boolean enableLocalLogPrefix, String localApp, String rawMessage) {
        return enableLocalLogPrefix ? localApp + rawMessage : rawMessage;
    }

}
